package allaboutmybook;

import java.util.HashMap;
import java.util.LinkedList;

import dao.DAOConcretoResenhas;
import dao.DAOResenhas;
import excecoes.ChaveJaExisteException;

public class GerenteConcretoDasResenhas implements GerenteDasResenhas
{
	private static GerenteConcretoDasResenhas gerenteDasResenhas = null;
	private DAOResenhas daoResenhas;
	
	private GerenteConcretoDasResenhas()
	{
		
		this.daoResenhas = new DAOConcretoResenhas();
	}
	
	public static GerenteConcretoDasResenhas getInstance()
	{
		if(gerenteDasResenhas == null)
		{
			gerenteDasResenhas = new GerenteConcretoDasResenhas();
		}
		
		return gerenteDasResenhas;
	}
	
	public HashMap<String,String> pegarTitulosENotasDeTodasAsResenhas()
	{
		HashMap<String,String> titulosENotasDeTodasAsResenhas = new HashMap<String,String>();
		
		LinkedList<Resenha> todasAsResenhas = this.daoResenhas.pegarTodasAsResenhas();
		for(int i = 0; i < todasAsResenhas.size(); i++)
		{
			Resenha umaResenha = todasAsResenhas.get(i);
			String tituloDaResenha = umaResenha.getTitulo();
			String notaDaResenha = umaResenha.getNota();
			titulosENotasDeTodasAsResenhas.put(tituloDaResenha, notaDaResenha);
		}
		
		return titulosENotasDeTodasAsResenhas;
	}
	
	public void adicionarNovaResenha(String titulo, String nota,
											String autorResenha, String textoResenha) throws ChaveJaExisteException
	{
		Resenha novaResenha = new Resenha(titulo,nota,autorResenha,textoResenha);
		
		try
		{
			this.daoResenhas.adicionarNovaResenha(novaResenha);
		}
		catch(ChaveJaExisteException exc)
		{
			throw new ChaveJaExisteException();
		}
	}

}
